<?php
namespace App\Http\Controllers\Workman;

use GatewayWorker\Lib\Gateway;
use App\Http\Controllers\Controller;

class WebSocketController extends Controller
{
    /**
     * 当客户端连接上gateway进程时(TCP三次握手完毕时)触发的回调函数。
     *
     * @param string $clientId 固定为20个字符的字符串，用来全局标记一个socket连接
     * @return void
     * @author liangl
     */
    public static function onConnect(string $clientId)
    {
        Gateway::sendToClient(
            $clientId,
            \json_encode(['client_id'=>$clientId, 'msgType'=>0], 320)
        );
    }

    /**
     * 当客户端发来数据(Gateway进程收到数据)后触发的回调函数
     *
     * @param string $clientId
     * @param array $data
     * @return void
     * @author liangl
     */
    public static function onMessage(string $clientId, array $data)
    {
        # code...
        //业务处理 如存消息
    }

    /**
     * 向uid绑定的所有在线client_id发送数据。
     *
     * @param [type] $uid
     * @param [type] $data
     * @return void
     * @author liangl
     */
    public static function sendToUid($uid, $data)
    {
        Gateway::sendToUid($uid,json_encode($data,320));
    }

    public static function sendAll($content = 'Test'){
        $data = [
            'username'=>"系统消息",
            'avatar'=>"http://www.qqpk.cn/Article/UploadFiles/201501/20150113145724330.jpg",
            'id'=>"10000",
            'type'=>"friend",
            'content'=>"这是来自系统的消息：".$content,
            'msgType' => 1
        ];
        Gateway::sendToAll(json_encode($data,320));
    }

    public static function onClose($client_id) {
      
    }
}
